///*
// * BSM6.0
// *
// * Copyright 2012-2013 (C) SINODATA CO., LTD. All Rights Reserved.
// */
//package com.sinodata.bsm.center.web.action.config;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import net.sf.json.JSONArray;
//import net.sf.json.JSONObject;
//
//import org.springframework.beans.factory.annotation.Autowired;
//
//import com.sinodata.bsm.center.bean.Condition;
//import com.sinodata.bsm.center.bean.Page;
//import com.sinodata.bsm.center.bean.QueryDimensionBean;
//import com.sinodata.bsm.center.bean.TreeData;
//import com.sinodata.bsm.center.cache.QueryDimensionCache;
//import com.sinodata.bsm.center.service.resource.ResDimensionService;
//import com.sinodata.bsm.center.util.web.Struts2Utils;
//import com.sinodata.bsm.center.web.action.BaseAction;
//import com.sinodata.bsm.common.vo.QueryDimension;
//import com.sinodata.cmdb.vo.CiAttrDef;
//
///**
// * <p>
// * Description: 
// * </p>
// *
// * @author dongyushi
// * @version 1.0
//
// * <p>
// * History: 
// *
// * Date                     Author         Version     Description
// * ---------------------------------------------------------------------------------
// * 2012-5-21 上午9:40:03          dongyushi        1.0         To create
// * </p>
// *
// * @since 
// * @see     
// */
//public class ResourceDimensionConfigAction extends BaseAction<QueryDimension> {
//
//    /**
//     * serialVersionUID
//     */
//    private static final long serialVersionUID = -2423730569613866497L;
//
//    private Long[] ids;
//
//    private Long id;
//
//    private QueryDimension entity;
//
//    @Autowired
//    private ResDimensionService resDimensionService;
//    @Autowired
//    private QueryDimensionCache queryDimensionCache;
//
//    public String common() {
//        return "common";
//    }
//
//    public String add() {
//        return "add";
//    }
//
//    /**
//     * 查询列表
//     * @throws IOException
//     */
//    @Override
//    public String list() throws IOException {
//        //查询条件
//        String name = request.getParameter("name");
//        Condition condition = new Condition();
//        Map<String, String> map = new HashMap<String, String>();
//        if (name != null && !name.equals("")) {
//            map.put("name", "'" + name + "'");
//        }
//        condition.setWhere(map);
//        //排序
//        Map<String, String> orderMap = new HashMap<String, String>();
//        String order = request.getParameter("sSortDir_0");
//        String col = request.getParameter("mDataProp_" + request.getParameter("iSortCol_0"));
//        if (!col.equals("checkbox")) {
//            orderMap.put(col, order);
//        }
//        Page<QueryDimension> page = new Page<QueryDimension>();
//        page.setOrder(orderMap);
//        page.setPageNo(Integer.valueOf(request.getParameter("iDisplayStart")) / Integer.valueOf(request.getParameter("iDisplayLength")) + 1);
//        page.setPageSize(Integer.valueOf(request.getParameter("iDisplayLength")));
//        Page<QueryDimensionBean> aaData = resDimensionService.findByPage(page, condition);
//
//        JSONObject json = new JSONObject();
//        json.element("iTotalRecords", page.getTotal());
//        json.element("iTotalDisplayRecords", page.getTotal());
//        JSONArray array = new JSONArray();
//        for (QueryDimensionBean resDimension : aaData.getRows()) {
//            JSONObject obj = new JSONObject();
//            obj.element("checkbox", "<div align='center'><input type='checkbox' name='dt_check' id='dt_check' value='" + resDimension.getQueryDimension().getId() + "'></div>");
//            obj.element("op", "<div style='width: 100px'>&nbsp;<a href='javascript:preview(" + resDimension.getQueryDimension().getId() + ");'>预览</a>&nbsp<a href='javascript:edit(" + resDimension.getQueryDimension().getId() + ");'>修改</a>&nbsp<a href='javascript:deleteOne(" + resDimension.getQueryDimension().getId() + ");'>删除</a><div>");
//            obj.element("id", resDimension.getQueryDimension().getId());
//            obj.element("name", resDimension.getQueryDimension().getName());
//            obj.element("order", resDimension.getQueryDimension().getOrder());
//            obj.element("firstDimCode", resDimension.getFirstDimName() == null ? "" : resDimension.getFirstDimName());
//            obj.element("secondDimCode", resDimension.getSecondDimName() == null ? "" : resDimension.getSecondDimName());
//            obj.element("thirdDimCode", resDimension.getThirdDimName() == null ? "" : resDimension.getThirdDimName());
//            array.add(obj);
//        }
//        json.element("aaData", array);
//        renderText(json.toString());
//        return null;
//    }
//
//    /**
//     * 一级维度下拉框
//     * @return
//     * @throws IOException
//     */
//    public String dimCodeListFirst() throws IOException {
//        List<CiAttrDef> list = resDimensionService.getCiAttrDef();
//        List<Map<String, String>> listResult = new ArrayList<Map<String, String>>();
//        if (list.size() != 0) {
//            Map<String, String> map1 = new HashMap<String, String>();
//            map1.put("id", "");
//            map1.put("name", "请选择第一纬度");
//            listResult.add(map1);
//        }
//        for (CiAttrDef ciAttrDef : list) {
//            Map<String, String> map = new HashMap<String, String>();
//            map.put("id", String.valueOf(ciAttrDef.getId()));
//            map.put("name", ciAttrDef.getName());
//            listResult.add(map);
//        }
//        Struts2Utils.renderJson(listResult);
//        return null;
//    }
//
//    /**
//     * 二级维度下拉框
//     * @return
//     * @throws IOException
//     */
//    public String dimCodeListSecond() throws IOException {
//        String firstDimCode = request.getParameter("firstDimCode");
//        List<CiAttrDef> ciAttrDefList = resDimensionService.getCiAttrDef();
//        List<Map<String, String>> listResult = new ArrayList<Map<String, String>>();
//        if (ciAttrDefList.size() != 0) {
//            Map<String, String> map1 = new HashMap<String, String>();
//            map1.put("id", "");
//            map1.put("name", "请选择第二纬度");
//            listResult.add(map1);
//        }
//        for (CiAttrDef ciAttrDef : ciAttrDefList) {
//            if (!firstDimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                Map<String, String> map = new HashMap<String, String>();
//                map.put("id", String.valueOf(ciAttrDef.getId()));
//                map.put("name", ciAttrDef.getName());
//                listResult.add(map);
//            }
//        }
//        Struts2Utils.renderJson(listResult);
//        return null;
//    }
//
//    /**
//     * 三级维度下拉框
//     * @return
//     * @throws IOException
//     */
//    public String dimCodeListThird() throws IOException {
//        String firstDimCode = request.getParameter("firstDimCode");
//        String secondDimCode = request.getParameter("secondDimCode");
//        List<Map<String, String>> listResult = new ArrayList<Map<String, String>>();
//        List<CiAttrDef> ciAttrDefList = resDimensionService.getCiAttrDef();
//        if (ciAttrDefList.size() != 0) {
//            Map<String, String> map1 = new HashMap<String, String>();
//            map1.put("id", "");
//            map1.put("name", "请选择第三纬度");
//            listResult.add(map1);
//        }
//        for (CiAttrDef ciAttrDef : ciAttrDefList) {
//            if (firstDimCode != null && !firstDimCode.equals(String.valueOf(ciAttrDef.getId())) && secondDimCode != null && !secondDimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                Map<String, String> map = new HashMap<String, String>();
//                map.put("id", String.valueOf(ciAttrDef.getId()));
//                map.put("name", ciAttrDef.getName());
//                listResult.add(map);
//            }
//        }
//        Struts2Utils.renderJson(listResult);
//        return null;
//    }
//
//    public String firstDimCodeEditList() throws IOException {
//        String dimCode = request.getParameter("dimCode");
//        List<CiAttrDef> ciAttrDefList = resDimensionService.getCiAttrDef();
//        List<TreeData> list = new ArrayList<TreeData>();
//        for (CiAttrDef ciAttrDef : ciAttrDefList) {
//            TreeData treeData = new TreeData();
//            treeData.setId(String.valueOf(ciAttrDef.getId()));
//            treeData.setText(ciAttrDef.getName());
//            if (dimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                treeData.setSelected(true);
//            } else {
//                treeData.setSelected(false);
//            }
//            list.add(treeData);
//        }
//        JSONArray jSONArray = JSONArray.fromObject(list);
//        renderText(jSONArray.toString());
//        return null;
//    }
//
//    public String secondDimCodeEditList() throws IOException {
//        String firstDimCode = request.getParameter("firstDimCode");
//        String secondDimCode = request.getParameter("secondDimCode");
//        List<CiAttrDef> ciAttrDefList = resDimensionService.getCiAttrDef();
//        List<TreeData> list = new ArrayList<TreeData>();
//        for (CiAttrDef ciAttrDef : ciAttrDefList) {
//            if (!firstDimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                TreeData treeData = new TreeData();
//                treeData.setId(String.valueOf(ciAttrDef.getId()));
//                treeData.setText(ciAttrDef.getName());
//                if (secondDimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                    treeData.setSelected(true);
//                } else {
//                    treeData.setSelected(false);
//                }
//                list.add(treeData);
//            }
//        }
//        JSONArray jSONArray = JSONArray.fromObject(list);
//        renderText(jSONArray.toString());
//        return null;
//    }
//
//    public String thirdDimCodeEditList() throws IOException {
//        String firstDimCode = request.getParameter("firstDimCode");
//        String secondDimCode = request.getParameter("secondDimCode");
//        String thirdDimCode = request.getParameter("thirdDimCode");
//        List<CiAttrDef> ciAttrDefList = resDimensionService.getCiAttrDef();
//        List<TreeData> list = new ArrayList<TreeData>();
//        for (CiAttrDef ciAttrDef : ciAttrDefList) {
//            if (!firstDimCode.equals(String.valueOf(ciAttrDef.getId())) && !secondDimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                TreeData treeData = new TreeData();
//                treeData.setId(String.valueOf(ciAttrDef.getId()));
//                treeData.setText(ciAttrDef.getName());
//                if (thirdDimCode.equals(String.valueOf(ciAttrDef.getId()))) {
//                    treeData.setSelected(true);
//                } else {
//                    treeData.setSelected(false);
//                }
//                list.add(treeData);
//            }
//        }
//        JSONArray jSONArray = JSONArray.fromObject(list);
//        renderText(jSONArray.toString());
//        return null;
//    }
//
//    /**
//     * 范围限制树
//     * @return
//     * @throws IOException
//     */
//    public String dimScopeList() throws IOException {
//        //几级范围限制
//        String flag = request.getParameter("flag");
//        String dimCode = request.getParameter("dimCode");
//        String dimLevel = request.getParameter("dimLevel");
//        String dimScope = request.getParameter("dimScope");
//        String[] a = null;
//        if (dimScope != "") {
//            if (dimScope.contains(",")) {
//                a = dimScope.split(",");
//            } else {
//                a = new String[] { dimScope };
//            }
//        }
//        List<String> dimScopeList2;
//        if (a != null) {
//            dimScopeList2 = Arrays.asList(a);
//            Collections.sort(dimScopeList2);
//        } else {
//            dimScopeList2 = null;
//        }
//
//        String id = request.getParameter("id");
//        if (id == null || id.equals("-1")) {
//            if (!dimCode.equals("") && !dimLevel.equals("")) {
//                List<TreeData> list = resDimensionService.getSelectTreeDate(dimCode, Integer.valueOf(dimLevel), null, dimScopeList2);
//                JSONArray jSONArray = JSONArray.fromObject(list);
//                renderText(jSONArray.toString());
//            } else if (!dimCode.equals("") && dimLevel.equals("")) {
//                int lv = 0;
//                lv = resDimensionService.getMaxLvByDimCode(dimCode);
//                List<TreeData> list = resDimensionService.getSelectTreeDate(dimCode, lv, null, dimScopeList2);
//                JSONArray jSONArray = JSONArray.fromObject(list);
//                renderText(jSONArray.toString());
//            } else {
//                List<TreeData> list = new ArrayList<TreeData>();
//                JSONArray jSONArray = JSONArray.fromObject(list);
//                renderText(jSONArray.toString());
//            }
//        } else {
//            QueryDimension queryDimension = resDimensionService.findById(Long.valueOf(id));
//            String scope = "";
//            if (flag.equals("1")) {
//                scope = queryDimension.getFirstDimScope();
//            }
//            if (flag.equals("2")) {
//                scope = queryDimension.getSecondDimScope();
//            }
//            if (flag.equals("3")) {
//                scope = queryDimension.getThirdDimScope();
//            }
//            if (scope == null) {
//                List<TreeData> list = new ArrayList<TreeData>();
//                if (dimLevel != null && dimLevel.equals("")) {
//                    list = resDimensionService.getSelectTreeDate(dimCode, resDimensionService.getMaxLvByDimCode(dimCode), null, dimScopeList2);
//                } else {
//                    list = resDimensionService.getSelectTreeDate(dimCode, Integer.valueOf(dimLevel), null, dimScopeList2);
//                }
//                JSONArray jSONArray = JSONArray.fromObject(list);
//                renderText(jSONArray.toString());
//            } else {
//                String[] s = null;
//                if (scope.contains(",")) {
//                    s = scope.split(",");
//                } else {
//                    s = new String[] { scope };
//                }
//                List<String> scopeList = Arrays.asList(s);
//                Collections.sort(scopeList);
//                if (!dimCode.equals("") && !dimLevel.equals("")) {
//                    List<TreeData> list = resDimensionService.getSelectTreeDate(dimCode, Integer.valueOf(dimLevel), scopeList, dimScopeList2);
//                    JSONArray jSONArray = JSONArray.fromObject(list);
//                    renderText(jSONArray.toString());
//                }
//                if (!dimCode.equals("") && dimLevel.equals("")) {
//                    int lv = 0;
//                    lv = resDimensionService.getMaxLvByDimCode(dimCode);
//                    List<TreeData> list = resDimensionService.getSelectTreeDate(dimCode, lv, scopeList, dimScopeList2);
//                    JSONArray jSONArray = JSONArray.fromObject(list);
//                    renderText(jSONArray.toString());
//                }
//            }
//
//        }
//
//        return null;
//    }
//
//    /**
//     * 保存
//     * @throws IOException
//     */
//    @Override
//    public String save() throws IOException {
//        entity.setFirstDimScope(request.getParameter("firstDimScope1"));
//        entity.setSecondDimScope(request.getParameter("secondDimScope1"));
//        entity.setThirdDimScope(request.getParameter("thirdDimScope1"));
//        if (entity.getId() != null) {
//            resDimensionService.update(entity);
//            queryDimensionCache.put(entity.getId(), entity);
//        } else {
//            resDimensionService.add(entity);
//            queryDimensionCache.put(entity.getId(), entity);
//        }
//        return null;
//    }
//
//    /**
//     * 删除
//     */
//    @Override
//    public String delete() {
//        resDimensionService.delete(ids);
//        //缓存 循环操作
//        for (Long id : ids) {
//            queryDimensionCache.remove(id);
//        }
//        renderText("true");
//        return null;
//    }
//
//    public Long[] getIds() {
//        return ids;
//    }
//
//    public void setIds(Long[] ids) {
//        this.ids = ids;
//    }
//
//    public Long getId() {
//        return id;
//    }
//
//    public void setId(Long id) {
//        this.id = id;
//    }
//
//    @Override
//    public String input() throws Exception {
//        QueryDimensionBean resDimension = resDimensionService.getResDimension(Long.valueOf(request.getParameter("id")));
//        Struts2Utils.getRequest().setAttribute("resDimension", resDimension);
//        return "update";
//    }
//
//    /**
//     * 转向预览页面
//     * @return
//     * @throws Exception
//     */
//    public String preview() throws Exception {
//        List<TreeData> list = resDimensionService.getTreeDate(Long.valueOf(request.getParameter("id")));
//        JSONArray jSONArray = JSONArray.fromObject(list);
//        Struts2Utils.getRequest().setAttribute("treeData", jSONArray.toString());
//        return "preview";
//    }
//
//    @Override
//    public QueryDimension getModel() {
//        return entity;
//    }
//
//    @Override
//    protected void prepareModel() throws Exception {
//        if (id != null) {
//            entity = resDimensionService.get(id);
//            if (entity == null) {
//                entity = new QueryDimension();
//            }
//        } else {
//            entity = new QueryDimension();
//        }
//    }
//
//}
